The invention relates to storage technology, and more particularly, to a method and apparatus for managing storage devices.
In a cloud storage environment, i.e., a storage-as-a-service environment, a storage service provider provides a certain storage resource as required by a user application and charges per the required storage resource. Generally, a requirement on a storage resource is described according to the requirement on performance measurements of the storage resource. The performance measurements refer to for example, storage capacity, access rate, and storage redundancy, etc. From the perspective of user application, an actual storage device is totally transparent. However, from the perspective of the service provider, a complex management is needed.
In a traditional storage environment, a plurality of methods of managing storage devices have been proposed. These methods may be categorized into two approaches: simplifying volume allocation and automatically deciding on volume allocation. According to the approach of simplifying volume allocation, predefined criteria such as scripts are used to simplify processes like allocating and mapping storage devices. However, this approach can only perform static management of volumes of storage devices. According to the approach of automatically deciding on volume allocation, a storage device that can provide storage resources required by a user application is allocated to the user application by monitoring the actual running performance of the storage device. This approach assumes that the user application's requirements on storage resources may be satisfied by an individual storage device.
However, neither of the above approaches may be directly applied to a cloud storage environment. In a cloud storage environment, the storage resources required by a user application may be provided by a plurality of storage devices. For example, the storage volume required by the user application is provided by a plurality of storage devices; the access rate required by the user application is realized through allocating an access request to the plurality of storage devices; the redundancy required by the user application is provided by providing additional storage devices. However, the actual storage devices employed by the provider are of different types and thus have different capacities. Some devices may not have error-tolerance capacity. In this case, it is quite different from a traditional storage environment in aspects of how to allocate user data to actual storage devices, how to perform dynamic adjustment when the requirements of the user application change, how to guarantee the redundancy required by the user application, and how to carry out data recovery and reallocation when error happens.
It is thus desirable to have a method of managing storage devices in a cloud storage environment.